/**
 * des: 数字 转 繁体汉字
 * acc 输入的转账金额
 * callback(prew, postw) prew:万以上金额  postw:万以下金额
 */
 const capitalAcc = (acc, callback) => {
   // 汉字数字
   const cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
   // 基本单位
   const cnIntRadice = ['', '拾', '佰', '仟']
   // 对应整数部分的扩展单位
   const cnIntunits = ['', '万', '亿', '兆']
   // 对应小数部分的扩展单位
   const cnDecunits = ['', '角', '分', '里']
   // 整数金额后面的字符
   const cnInteger = '整'
   // 整数之后的单位
   const cnIntLast = '元'
   // 最大处理的数字
   const maxNum = 9999999999999999.99
   // 金额整数部分
   let integerNum
   // 金额小数部分
   let decimalNum
   // 输出金额字符串
   let chineseStr = ''
   // 分离金额后，使用的数组、预定义
   let parts
  //  console.log('===capitalAcc 打印===>>> 方法进入')
   if(acc === '' || acc < 0) {
    callback('', '')
    return ''
   }

   acc = parseFloat(acc) 
   if(acc >= maxNum) {
     //如果超出最大值
     callback('', '')
     return ''
   }

   if(acc === 0){
     chineseStr = cnNums[0] + cnIntLast + cnInteger
     callback(chineseStr, '')
     return;
   }
   
  // 转换成字符串
  acc = acc.toString()
  if(acc.indexOf('.') < 0) {
    integerNum = acc
    decimalNum = ''
  } else {
    parts = acc.split('.')
    integerNum = parts[0]
    decimalNum = parts[1].substr(0, 4)
  }

  // 获取整数部分的转换
  if(parseInt(integerNum, 10) > 0) {
    let zeroCount = 0
    const IntLen = integerNum.length
    for (let i = 0; i < IntLen; i++) {
      const n = integerNum.substr(i, 1)
      const p = IntLen - i -1
      const q = p / 4
      const m = p % 4
      if (n === '0') {
        zeroCount++
      } else {
        if(zeroCount > 0) {
          chineseStr += cnNums[0]
        }
        // 归 0
        zeroCount = 0
        chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]
      }

      if(m === 0 && zeroCount < 4) {
        chineseStr += cnIntunits[q]
      }
    }
    chineseStr += cnIntLast
  }

  // 小数部分
  if (decimalNum !== '') {
    const decLen = decimalNum.length
    for (let i = 0; i < decLen; i++) {
      const n = decimalNum.substr(i, 1)
      if (n !== '0') {
        chineseStr += cnNums[Number(n)] + cnDecunits[i]
      }
    }
  }

  if (chineseStr === ''){
    chineseStr += cnNums[0] + cnIntLast + cnInteger
  } else if(decimalNum === '') {
    chineseStr += cnInteger
  }

  // 如，贰拾贰万 贰仟叁佰肆拾捌元整 len=12 lastIndex = 9
  let index = chineseStr.lastIndexOf('万')
  if (index > 0) {
    let prew = chineseStr.substr(0, index+1)
    let postw = chineseStr.substr(index + 1)
    // console.log('===capitalAcc 打印1th prew, postw===>>>', prew, postw)
    callback(prew, postw)
  } else {
    // console.log('===capitalAcc 打印2th chineseStr===>>>', chineseStr)
    callback(chineseStr, '')
  }
 }

 /**
  * des: 输入的金额数字 转换 金额格式
  * acc: 输入的转账金额
  * callback(tNum) tNum:已转金额格式
  */
 const toMoneyNum = (acc, callback) => {
  // console.log('===toMoneyNum 打印===>>> 方法进入')
  if (acc) {
    if (isNaN(acc)){
      callback('')
      return ''
    }

    acc = typeof acc === 'string' ? parseFloat(acc) : acc // 判断是否是字符串，是就转数字
    acc = acc.toFixed(2)
    acc = Number.parseFloat(acc)

    acc = acc.toLocaleString() // 转换成金额显示的格式方法

    // 判断是否有小数
    if (acc.indexOf('.') < 0) {
      acc = acc + '.00'
    }
    // console.log('===toMoneyNum 打印===>>>', acc)
    callback(acc)
  }
 }

 const ToolEasy = {}
 ToolEasy.capitalAcc = capitalAcc
 ToolEasy.toMoneyNum = toMoneyNum


 export default ToolEasy